package File;

import java.io.*;
import java.util.Scanner;

//扫描指定目录，并且要求找到文件名称或者文件内容中包含指定字符的所有普通文件；
public class Demo14 {
    public static void main(String[] args) {
        //首先进行输入所要扫描的目录文件；
        Scanner scanne = new Scanner(System.in);
        System.out.println("请输入你要扫描的目录文件的路径");
        String srcPath=scanne.next();
        //进行判断该路径是否是目录路径；
        File srcFile=new File(srcPath);
        if(!srcFile.isDirectory()){
            System.out.println("该路径不合法");
            return;
        }
        //进行输入要指定的关键字；
        System.out.println("请输入你要指定的关键字");
        String keyword=scanne.next();
        //接这进行寻找目录文件中的普通文件的名称和内容是否是和指定的关键字相同；
        srcRootFile(srcFile,keyword);
    }
    private static void srcRootFile(File srcFile,String keyword){
        //进行获取该目录文件的所有内容；找到符合的要求的普通文件；
        File[] files=srcFile.listFiles();
        for(File filekey:files){
            if(!filekey.isFile()){
                //进行递归操作；
                srcRootFile(filekey,keyword);
            }else{
                delateFile(filekey,keyword);
            }
        }
    }
    private static void delateFile(File fileKey,String keyword){
        //进行判断该普通文件中是否包含关键字；
        if(fileKey.getName().contains(keyword)){
            System.out.println("该文件名称中包含关键字"+fileKey.getParent());
            return;
        }
        //进行判断普通文件内容中是否包含关键字；
        StringBuilder stringBuilder=new StringBuilder();
        try(Reader reader=new FileReader(fileKey)) {
            //进行读文件操作，将文件的内容进行整合，进而判断是否包含关键字；
            while(true){
                char[] date=new char[1024];
                int n=reader.read(date);
                if(n==-1){
                    break;
                }
                stringBuilder.append(date,0,n);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        if(stringBuilder.indexOf(keyword)>=0){
            System.out.println("文件内容中包含关键字"+fileKey.getAbsolutePath());
        }
        return;
    }
}